package com.lcm.oj.lanqiao.year2020.real_two;

import java.io.*;

/**
 * @author Coder-lcm
 * @date 2021/4/1
 *
 * 小蓝有一个数字矩阵，里面只包含数字 0 和 2。小蓝很喜欢 2020，他想找到这个数字矩阵中有多少个 2020 。
 *
 * 小蓝只关注三种构成 2020 的方式：
 *
 * • 同一行里面连续四个字符从左到右构成 2020。
 *
 * • 同一列里面连续四个字符从上到下构成 2020。
 *
 * • 在一条从左上到右下的斜线上连续四个字符，从左上到右下构成 2020。
 *
 * 例如，对于下面的矩阵：
 *
 * 220000
 *
 * 000000
 *
 * 002202
 *
 * 000000
 *
 * 000022
 *
 * 002020
 *
 * 一共有 5 个 2020。其中 1 个是在同一行里的，1 个是在同一列里的，3 个是斜线上的。
 *
 * 小蓝的矩阵比上面的矩阵要大，由于太大了，他只好将这个矩阵放在了一个文件里面，在试题目录下有一个文件 2020.txt，里面给出了小蓝的矩阵。
 *
 * 请帮助小蓝确定在他的矩阵中有多少个 2020。
 *
 *
 */
public class T2_寻找2020 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(new File("/home/vitory/Workspace/oj project/Lcm-OJ-2020/lanqiao/src/com/lcm/oj/lanqiao/year2020/realone/t2_2020.txt")));
        int DATA_MAX = 6;
        int[][] nums = new int[DATA_MAX][DATA_MAX];
        int i1 = 0;
        int count2020 = 0;
        String lineStr = "";
        while ((lineStr = br.readLine()) != null && i1< DATA_MAX) {
            char[] chars = lineStr.toCharArray();
            for (int j = 0; j < chars.length; j++) {
                nums[i1][j] = chars[j] - '0';
            }
            i1++;
        }

        for (int i = 0; i < DATA_MAX; i++) {
            for (int j = 0; j < DATA_MAX; j++) {
                // 从左往右看
                if ( j + 3 < DATA_MAX
                        && nums[i][j] == 2
                        && nums[i][j+1] == 0
                        && nums[i][j+2] == 2
                        && nums[i][j+3] == 0) {
                    count2020++;
                }
                //从上往下看
                if (i + 3 < DATA_MAX
                        && nums[i][j] == 2
                        && nums[i+1][j] == 0
                        && nums[i+2][j] == 2
                        && nums[i+3][j] == 0) {
                    count2020++;
                }

                //从左上往右下看
                if (i + 3 < DATA_MAX && j + 3 < DATA_MAX
                        && nums[i][j] == 2
                        && nums[i+1][j+1] == 0
                        && nums[i+2][j+2] == 2
                        && nums[i+3][j+3] == 0) {
                    count2020++;
                }
            }
        }

        System.out.println(count2020);
    }
}
